<!-- HTML header for doxygen 1.8.13-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>MTB CAT1 Peripheral driver library: DMA          (Direct Memory Access)</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen_style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><a href="http://www.cypress.com/"><img alt="Logo" src="IFXCYP_one-line.png"/></a></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">MTB CAT1 Peripheral driver library</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('group__group__dma.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#groups">API Reference</a>  </div>
  <div class="headertitle">
<div class="title">DMA (Direct Memory Access)</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">General Description</h2>
<p>Configures a DMA channel and its descriptor(s). </p>
<p>The functions and other declarations used in this driver are in cy_dma.h. You can include cy_pdl.h to get access to all functions and declarations in the PDL.</p>
<p>The DMA channel can be used in any project to transfer data without CPU intervention basing on a hardware trigger signal from another component.</p>
<p>A device may support more than one DMA hardware block. Each block has a set of registers, a base hardware address, and supports multiple channels. Many API functions for the DMA driver require a base hardware address and channel number. Ensure that you use the correct hardware address for the DMA block in use.</p>
<p>Features:</p><ul>
<li>Multiple DW blocks (device specific)</li>
<li>Multiple channels per each DW block (device specific)</li>
<li>Four priority levels for each channel</li>
<li>Byte, half-word (2-byte), and word (4-byte) transfers</li>
<li>Configurable source and destination addresses</li>
<li>CRC calculation support (only for CPUSS_ver2)</li>
</ul>
<h1><a class="anchor" id="group_dma_configuration"></a>
Configuration Considerations</h1>
<p>To set up a DMA driver, initialize a descriptor, initialize and enable a channel, and enable the DMA block.</p>
<p>To set up a descriptor, provide the configuration parameters for the descriptor in the <a class="el" href="structcy__stc__dma__descriptor__config__t.html">cy_stc_dma_descriptor_config_t</a> structure. Then call the <a class="el" href="group__group__dma__descriptor__functions.html#gab1610fab6f2dd5fd25c031ac0aa9d8cb">Cy_DMA_Descriptor_Init</a> function to initialize the descriptor in SRAM. You can modify the source and destination addresses dynamically by calling <a class="el" href="group__group__dma__descriptor__functions.html#ga2df838cf16522aa18ad713fd05107b4c">Cy_DMA_Descriptor_SetSrcAddress</a> and <a class="el" href="group__group__dma__descriptor__functions.html#ga2c7111653150314961db83f7941a03c2">Cy_DMA_Descriptor_SetDstAddress</a>.</p>
<p>To set up a DMA channel, provide a filled <a class="el" href="structcy__stc__dma__channel__config__t.html">cy_stc_dma_channel_config_t</a> structure. Call the <a class="el" href="group__group__dma__channel__functions.html#gab0beed3c05362206ac66fc4327d8964b">Cy_DMA_Channel_Init</a> function, specifying the channel number. Use <a class="el" href="group__group__dma__channel__functions.html#ga13e6923cafe660ba825ba6d5b1841bf7">Cy_DMA_Channel_Enable</a> to enable the configured DMA channel.</p>
<p>Call <a class="el" href="group__group__dma__channel__functions.html#ga13e6923cafe660ba825ba6d5b1841bf7">Cy_DMA_Channel_Enable</a> for each DMA channel in use.</p>
<p>When configured, another peripheral typically triggers the DMA. The trigger is connected to the DMA using the trigger multiplexer. The trigger multiplexer driver has a software trigger you can use in firmware to trigger the DMA. See the <a href="group__group__trigmux.html">Trigger Multiplexer</a> documentation.</p>
<p>The following is a simplified structure of the DMA driver API interdependencies in a typical user application: </p><div class="image">
<img src="dma.png" alt="dma.png"/>
</div>
<p><b>NOTE:</b> DMA Trigger can also be provided through <a class="el" href="group__group__dma__channel__functions.html#ga0fdf26389ba1b635c7627e7924f0a501">Cy_DMA_Channel_SetSWTrigger</a> API on supported targets. <br />
<b>NOTE:</b> DMA will read descriptors from SRAM memory. To run DMA on devices with Core CM7, D cache needs to be cleaned before DMA transfer and should be invalidated after DMA transfer. <br />
<b>NOTE:</b> Even if a DMA channel is enabled, it is not operational until the DMA block is enabled using function <a class="el" href="group__group__dma__block__functions.html#gad14b53935dc8321f395e49a7dfec2c5a">Cy_DMA_Enable</a>.<br />
<b>NOTE:</b> If the DMA descriptor is configured to generate an interrupt, the interrupt must be enabled using the <a class="el" href="group__group__dma__channel__functions.html#gab3e0528d8e57ee04dbbee89ffca38545">Cy_DMA_Channel_SetInterruptMask</a> function for each DMA channel.</p>
<p>For example: </p><div class="fragment"><div class="line">    </div><div class="line">    <span class="comment">/* Scenario: Initialize a 1D descriptor */</span></div><div class="line"><span class="preprocessor">    #define DATACNT (8UL)</span></div><div class="line"><span class="preprocessor">    #define CY_DMA_INTR_MASK (0x01UL)</span></div><div class="line"></div><div class="line">    <a class="code" href="structcy__stc__dma__descriptor__t.html">cy_stc_dma_descriptor_t</a> descriptor;</div><div class="line">    <a class="code" href="structcy__stc__dma__descriptor__t.html">cy_stc_dma_descriptor_t</a> nextDescriptor;</div><div class="line">    uint32_t src_data[DATACNT];</div><div class="line">    uint32_t dst_data[DATACNT];</div><div class="line">    uint8_t currentYIndex;</div><div class="line"></div><div class="line">    <span class="comment">/* Enabling the interrupt using the Cy_DMA_Channel_SetInterruptMask function for DMA channel.*/</span></div><div class="line">    <a class="code" href="group__group__dma__channel__functions.html#gab3e0528d8e57ee04dbbee89ffca38545">Cy_DMA_Channel_SetInterruptMask</a>(DW0, 0UL, <a class="code" href="group__group__dma__macros.html#gadaa223697209effceea2fd4a8c957c86">CY_DMA_INTR_MASK</a>);</div><div class="line">    </div><div class="line">    <a class="code" href="structcy__stc__dma__descriptor__config__t.html">cy_stc_dma_descriptor_config_t</a> descriptor_cfg = </div><div class="line">    {</div><div class="line">        .<a class="code" href="structcy__stc__axidmac__descriptor__config__t.html#a15f8b7b5ee71eadc215de80ee7abcd25">retrigger</a> = <a class="code" href="group__group__dma__enums.html#gga8ea649c82d5e7d4d4bd72403468aadeea0bf275b3b0a14445f5adb266865664ee">CY_DMA_RETRIG_IM</a>,</div><div class="line">        .interruptType = <a class="code" href="group__group__dma__enums.html#gga46664f020f211baf0651e6c85c3c3e76ae49e9abd58d729c9875ce44e73b1b26b">CY_DMA_DESCR</a>,</div><div class="line">        .triggerOutType = <a class="code" href="group__group__dma__enums.html#gga46664f020f211baf0651e6c85c3c3e76ae49e9abd58d729c9875ce44e73b1b26b">CY_DMA_DESCR</a>,</div><div class="line">        .channelState = <a class="code" href="group__group__dma__enums.html#gga75740ce8bf02f62bc9e6c86307369f67a7f4266bff1786e17ba9b892ba03334db">CY_DMA_CHANNEL_ENABLED</a>,</div><div class="line">        .triggerInType = <a class="code" href="group__group__dma__enums.html#gga46664f020f211baf0651e6c85c3c3e76ae49e9abd58d729c9875ce44e73b1b26b">CY_DMA_DESCR</a>,</div><div class="line">        .dataSize = <a class="code" href="group__group__dma__enums.html#gga167a5222a0d666c6ce9e8382e56ac192a06aa9f141fdba0572953b0ffe8972ccc">CY_DMA_WORD</a>,</div><div class="line">        .srcTransferSize = <a class="code" href="group__group__dma__enums.html#gga2e6a1fad6945ca581ebd0fdbb8748314a559ffa18c8d6862e31c444eed54de51e">CY_DMA_TRANSFER_SIZE_WORD</a>,</div><div class="line">        .dstTransferSize = <a class="code" href="group__group__dma__enums.html#gga2e6a1fad6945ca581ebd0fdbb8748314a559ffa18c8d6862e31c444eed54de51e">CY_DMA_TRANSFER_SIZE_WORD</a>,</div><div class="line">        .descriptorType = <a class="code" href="group__group__dma__enums.html#gga69516534f5a562e8a2f55bb4203851d0a7d12c181e7b926a71c7c30eb77ac8955">CY_DMA_1D_TRANSFER</a>,</div><div class="line">        .srcAddress = &amp;src_data,</div><div class="line">        .dstAddress = &amp;dst_data,</div><div class="line">        .srcXincrement = 1U,</div><div class="line">        .dstXincrement = 1U,</div><div class="line">        .xCount = DATACNT,</div><div class="line">        .srcYincrement = 0U,</div><div class="line">        .dstYincrement = 0U,</div><div class="line">        .yCount = 1UL,</div><div class="line">        .nextDescriptor = &amp;nextDescriptor,</div><div class="line">    };</div><div class="line">    </div><div class="line">    <span class="keywordflow">if</span> (<a class="code" href="group__group__dma__enums.html#ggafbef983fffc7c7bb724322e8f64d32e5a5223359d0e1e316300e678afaa8cee96">CY_DMA_SUCCESS</a> != <a class="code" href="group__group__dma__descriptor__functions.html#gab1610fab6f2dd5fd25c031ac0aa9d8cb">Cy_DMA_Descriptor_Init</a>(&amp;descriptor, &amp;descriptor_cfg))</div><div class="line">    {</div><div class="line">        <span class="comment">/* Insert error handling */</span></div><div class="line">    }</div><div class="line">    </div><div class="line">    <span class="comment">/* Scenario: Setup and enable the DMA channel 0 of block DW0 */</span></div><div class="line">    <a class="code" href="structcy__stc__dma__channel__config__t.html">cy_stc_dma_channel_config_t</a> channelConfig;</div><div class="line">    channelConfig.<a class="code" href="structcy__stc__dma__channel__config__t.html#aab3204617ecee2a57b1f76832966227d">preemptable</a> = <span class="keyword">false</span>;</div><div class="line">    channelConfig.<a class="code" href="structcy__stc__dma__channel__config__t.html#a018bbd8e3039b78ad16f9c0536dde3c0">enable</a> = <span class="keyword">false</span>;</div><div class="line">    channelConfig.<a class="code" href="structcy__stc__dma__channel__config__t.html#aa40017613f97a28e2802e072fdf38817">bufferable</a> = <span class="keyword">false</span>;</div><div class="line">    </div><div class="line">    <span class="keywordflow">if</span> (<a class="code" href="group__group__dma__enums.html#ggafbef983fffc7c7bb724322e8f64d32e5a5223359d0e1e316300e678afaa8cee96">CY_DMA_SUCCESS</a> != <a class="code" href="group__group__dma__channel__functions.html#gab0beed3c05362206ac66fc4327d8964b">Cy_DMA_Channel_Init</a>(DW0, 0UL, &amp;channelConfig))</div><div class="line">    {</div><div class="line">        <span class="comment">/* Insert error handling */</span></div><div class="line">    }</div><div class="line">    </div><div class="line">    <a class="code" href="group__group__dma__channel__functions.html#ga4c5cca40de761c4b7827ce65538bf12d">Cy_DMA_Channel_SetDescriptor</a>(DW0, 0UL, &amp;descriptor);</div><div class="line">    <a class="code" href="group__group__dma__channel__functions.html#gae088032ef5679610fdcbea8d1b4a3cd3">Cy_DMA_Channel_SetPriority</a>(DW0, 0UL, 3UL);</div><div class="line">    <a class="code" href="group__group__dma__channel__functions.html#ga13e6923cafe660ba825ba6d5b1841bf7">Cy_DMA_Channel_Enable</a>(DW0, 0UL);</div><div class="line">    </div><div class="line">    <a class="code" href="group__group__dma__block__functions.html#gad14b53935dc8321f395e49a7dfec2c5a">Cy_DMA_Enable</a>(DW0);</div><div class="line"></div><div class="line">    <span class="keywordflow">if</span> (<span class="keyword">true</span> != <a class="code" href="group__group__dma__channel__functions.html#ga5a51ce188be53678509a623517d96f16">Cy_DMA_Channel_IsEnabled</a>(DW0, 0UL))</div><div class="line">    {</div><div class="line">        <span class="comment">/* Insert error handling */</span></div><div class="line">    }</div><div class="line"></div><div class="line">    currentYIndex = <a class="code" href="group__group__dma__channel__functions.html#gaceff87bfa4f24dfde2764ea8c45a1ecd">Cy_DMA_Channel_GetCurrentYIndex</a>(DW0, 0UL);</div><div class="line">    (void) currentYIndex;</div><div class="line"></div></div><!-- fragment --><p> CM7 cores in CAT1C devices support Data Cache. Data Cache line is 32 bytes. User needs to make sure that the source and destination buffer pointers and the config structure pointers passed to the following functions points to 32 bit aligned data. Cy_DMA_Channel_SetDescriptor, Cy_DMA_Descriptor_SetNextDescriptor, Cy_DMA_Descriptor_SetSrcAddress, Cy_DMA_Descriptor_SetDstAddress. User can use CY_ALIGN(32) macro for 32 bit alignment. User needs to clean the following data elements from the cache and invalidate before accessing them. source and destination buffers and descriptor structure. </p><div class="fragment"><div class="line">    int32_t cmpRes;</div><div class="line"></div><div class="line">    (void)<a class="code" href="group__group__dma__descriptor__functions.html#gab1610fab6f2dd5fd25c031ac0aa9d8cb">Cy_DMA_Descriptor_Init</a>(&amp;dw0_chan0_Descriptor, &amp;dw0_chan0_Descriptor_config);</div><div class="line">    <a class="code" href="group__group__dma__descriptor__functions.html#ga2df838cf16522aa18ad713fd05107b4c">Cy_DMA_Descriptor_SetSrcAddress</a>(&amp;dw0_chan0_Descriptor, src_data);</div><div class="line">    <a class="code" href="group__group__dma__descriptor__functions.html#ga2c7111653150314961db83f7941a03c2">Cy_DMA_Descriptor_SetDstAddress</a>(&amp;dw0_chan0_Descriptor, dst_data);</div><div class="line"></div><div class="line">    <a class="code" href="group__group__dma__channel__functions.html#gab0beed3c05362206ac66fc4327d8964b">Cy_DMA_Channel_Init</a>(DW0, 0UL, &amp;dw0_chan0_channelConfig);</div><div class="line">    <a class="code" href="group__group__dma__channel__functions.html#ga13e6923cafe660ba825ba6d5b1841bf7">Cy_DMA_Channel_Enable</a>(DW0, 0UL);</div><div class="line"></div><div class="line"><span class="preprocessor">#if (CY_CPU_CORTEX_M7) &amp;&amp; defined (ENABLE_CM7_DATA_CACHE)</span></div><div class="line">    SCB_CleanDCache_by_Addr((uint32_t*)src_data, DATACNT);</div><div class="line">    SCB_CleanDCache_by_Addr((uint32_t*)&amp;dw0_chan0_Descriptor, <span class="keyword">sizeof</span>(dw0_chan0_Descriptor));</div><div class="line"><span class="preprocessor">#endif</span></div><div class="line"><span class="preprocessor">#if (CY_IP_MXPERI_VERSION == 1U)</span></div><div class="line">    <a class="code" href="group__group__trigmux.html#ga882218319ecd105dede8b382e9a1c4a4">Cy_TrigMux_SwTrigger</a>(TRIG0_OUT_CPUSS_DW0_TR_IN0, <a class="code" href="group__group__trigmux__macros.html#ga9347a341f6903dee749841fae0dcb4a5">CY_TRIGGER_TWO_CYCLES</a>);</div><div class="line"><span class="preprocessor">#else </span><span class="comment">/* CY_IP_MXPERI_VERSION &gt; 1 */</span><span class="preprocessor"></span></div><div class="line">    <a class="code" href="group__group__trigmux.html#ga882218319ecd105dede8b382e9a1c4a4">Cy_TrigMux_SwTrigger</a>(TRIG_OUT_MUX_0_PDMA0_TR_IN0, <a class="code" href="group__group__trigmux__macros.html#ga9347a341f6903dee749841fae0dcb4a5">CY_TRIGGER_TWO_CYCLES</a>);</div><div class="line"><span class="preprocessor">#endif </span><span class="comment">/* CY_IP_MXPERI_VERSION */</span><span class="preprocessor"></span></div><div class="line"></div><div class="line">    <span class="keywordflow">while</span>(!<a class="code" href="group__group__dma__channel__functions.html#ga7fc35a1163e4d27c69a6bb79cd0d0798">Cy_DMA_Channel_GetInterruptStatus</a>(DW0,0UL))</div><div class="line">    {</div><div class="line"></div><div class="line">    }</div><div class="line"><span class="preprocessor">#if (CY_CPU_CORTEX_M7) &amp;&amp; defined (ENABLE_CM7_DATA_CACHE)</span></div><div class="line">    SCB_InvalidateDCache_by_Addr ((uint32_t*)dst_data, DATACNT);</div><div class="line"><span class="preprocessor">#endif</span></div><div class="line"></div><div class="line">    cmpRes = memcmp(src_data, dst_data, DATACNT);</div><div class="line">    <span class="keywordflow">if</span> (cmpRes !=0)</div><div class="line">    {</div><div class="line">        <span class="comment">/* Insert error handling */</span></div><div class="line">    }</div><div class="line">    <span class="keywordflow">else</span></div><div class="line">    {</div><div class="line">        <span class="comment">/* working case */</span></div><div class="line">    }</div></div><!-- fragment --> <h1><a class="anchor" id="group_dma_more_information"></a>
More Information.</h1>
<p>See: the DMA chapter of the device technical reference manual (TRM); the DMA Component datasheet; CE219940 - PSoC 6 MCU Multiple DMA Concatenation.</p>
<h1><a class="anchor" id="group_dma_changelog"></a>
Changelog</h1>
<table class="doxtable">
<tr>
<th>Version</th><th>Changes</th><th>Reason for Change </th></tr>
<tr>
<td>2.90 </td><td>Added new APIs <a class="el" href="group__group__dma__channel__functions.html#ga5a51ce188be53678509a623517d96f16">Cy_DMA_Channel_IsEnabled</a> and <a class="el" href="group__group__dma__channel__functions.html#gaceff87bfa4f24dfde2764ea8c45a1ecd">Cy_DMA_Channel_GetCurrentYIndex</a>. </td><td>New devices support.  </td></tr>
<tr>
<td>2.80 </td><td>Updated <a class="el" href="group__group__dma__block__functions.html#ga20b7caf0e766daf03db12644c8dff173">Cy_DMA_GetActiveChannel</a>. Added new API <a class="el" href="group__group__dma__block__functions.html#ga9c80b278b6fbf88ca8b4221a5d2fd139">Cy_DMA_GetActiveChannelIndex</a>. </td><td>Bug fix.  </td></tr>
<tr>
<td>2.70 </td><td>Updated <a class="el" href="group__group__dma__descriptor__functions.html#ga70f78f6b1560374bdccf90f95cc580e4">Cy_DMA_Descriptor_SetNextDescriptor</a> and <a class="el" href="group__group__dma__descriptor__functions.html#ga25aa60fd095d67d94c09ea15c2235329">Cy_DMA_Descriptor_GetNextDescriptor</a>. </td><td>Coverity bug fixes.  </td></tr>
<tr>
<td>2.60 </td><td>Fixed MISRA 2012 violations and minor documentation update. </td><td>MISRA 2012 compliance.  </td></tr>
<tr>
<td>2.50 </td><td>Fixed MISRA 2012 violations. </td><td>MISRA 2012 compliance.  </td></tr>
<tr>
<td>2.40.1 </td><td>Minor documentation updates. </td><td>Update to configure DMA on core CM7.  </td></tr>
<tr>
<td>2.40 </td><td>Minor Bug fixes. </td><td>Check for valid parameters.  </td></tr>
<tr>
<td>2.30 </td><td>Fixed MISRA 2012 violations. </td><td>MISRA 2012 compliance.  </td></tr>
<tr>
<td>2.20.1 </td><td>Minor documentation updates. </td><td>Documentation enhancement.  </td></tr>
<tr>
<td>2.20 </td><td>The channel number validation method is updated. </td><td>New devices support.  </td></tr>
<tr>
<td rowspan="3">2.10 </td><td>Flattened the organization of the driver source code into the single source directory and the single include directory. </td><td>Driver library directory-structure simplification.  </td></tr>
<tr>
<td>Added CRC mode and the CRC descriptor support. <br />
 Added the <a class="el" href="group__group__dma__block__functions.html#ga3ef821c63ecd6b0d33ded10db6ed618e">Cy_DMA_Crc_Init</a> function. </td><td>New devices support.  </td></tr>
<tr>
<td>Added register access layer. Use register access macros instead of direct register access using dereferenced pointers. </td><td>Makes register access device-independent, so that the PDL does not need to be recompiled for each supported part number.  </td></tr>
<tr>
<td>2.0.1 </td><td>Changed CY_DMA_BWC macro values from Boolean to numeric </td><td>Improvements made based on usability feedback  </td></tr>
<tr>
<td>2.0 </td><td>* All the API is refactored to be consistent within itself and with the rest of the PDL content.<ul>
<li>The descriptor API is updated as follows: The <a class="el" href="group__group__dma__descriptor__functions.html#gab1610fab6f2dd5fd25c031ac0aa9d8cb">Cy_DMA_Descriptor_Init</a> function sets a full bunch of descriptor settings, and the rest of the descriptor API is a get/set interface to each of the descriptor settings.</li>
<li>There is a group of macros to support the backward compatibility with most of the driver version 1.0 API. But, you should use the new v2.0 interface in new designs (do not just copy-paste from old projects). To enable the backward compatibility support, the CY_DMA_BWC definition should be changed to "1". </li>
</ul>
</td><td></td></tr>
<tr>
<td>1.0 </td><td>Initial version </td><td></td></tr>
</table>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="groups"></a>
API Reference</h2></td></tr>
<tr class="memitem:group__group__dma__macros"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__dma__macros.html">Macros</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__dma__functions"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__dma__functions.html">Functions</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__dma__data__structures"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__dma__data__structures.html">Data Structures</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:group__group__dma__enums"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="group__group__dma__enums.html">Enumerated Types</a></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part
<div id="nav-path" class="navpath">
    <ul>
        <li class="footer">
            Generated for <b>MTB CAT1 Peripheral driver library</b> by <b>Cypress Semiconductor Corporation</b>.
            All rights reserved.
        </li>
    </ul>
</div>
-->
</body>
</html>
